using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
namespace CpmBigDataImportService
{
/// <summary>
/// 内存表分类汇总
/// </summary>
public class SumDataTable
{
/// <summary>
/// 内存表分类汇总
/// </summary>
/// <param name="dt">需要分类汇总的内存表</param>
/// <param name="group">分类字段,逗号分隔字符串</param>
/// <param name="sum">汇总字段,逗号分隔字符串</param>
public SumDataTable(DataTable dt, string group, string sum)
{
if (null == dt || string.IsNullOrEmpty(group) || string.IsNullOrEmpty(sum))
throw new Exception("参数错误");
this.dt = dt;
this.groupFields = group.Split(',');
this.groupIndexs = new int[groupFields.Length];
for (int i = 0; i < groupFields.Length; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
if (groupFields[i].Equals(dt.Columns[j].ColumnName))
{
this.groupIndexs[i] = j;
break;
}
}
}
this.sumFields = sum.Split(',');
this.sumIndexs = new int[sumFields.Length];
for (int i = 0; i < sumFields.Length; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
if (sumFields[i].Equals(dt.Columns[j].ColumnName))
{
this.sumIndexs[i] = j;
break;
}
}
}
}
#region 属性
/// <summary>
/// 需要分类汇总内存表
/// </summary>
private DataTable dt;
/// <summary>
/// 分组字段
/// </summary>
private string[] groupFields;
/// <summary>
/// 汇总字段
/// </summary>
private string[] sumFields;
/// <summary>
/// 分组字段索引
/// </summary>
int[] groupIndexs;
/// <summary>
/// 汇总字段索引
/// </summary>
int[] sumIndexs;
#endregion
/// <summary>
/// 检查是否表为空、没有分类及汇总字段
/// </summary>
private void Check()
{
if (null == dt || null ==
c# datatable分类汇总
最新推荐文章于 2024-08-20 14:24:59 发布